﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common;
using System.Configuration;
using Insifo.BE.Gen;

namespace Insifo.DL.Gen
{
    public class DLCentroCosto : DLTransaction, IDLTransaccion<BECentroCosto>
    {
        #region  Members


        /// <summary>
        /// Método obtiene obtiene la Lista las CentroCostos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet Listar(BECentroCosto pbe)
        {
            DataSet ds = new DataSet();
            //List<BECentroCosto> lst = new List<BECentroCosto>();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                ds = sqlDB.ExecuteDataSet(dbCmd);


            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene las CentroCostos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet Listar_Sel(BECentroCosto pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Listar_Sel");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);

                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception)
            {
                throw;
            }

            finally
            {
                //if (dbCmd.Connection.State == ConnectionState.Open)
                //dbCmd.Connection.Close();
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene las CentroCostos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet ListarPorUsuario(string pstrUsuario)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_X_Usuario_Listar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_CodigoUsuario", DbType.String, pstrUsuario);
                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception)
            {
                throw;
            }

            finally
            {
                //if (dbCmd.Connection.State == ConnectionState.Open)
                //dbCmd.Connection.Close();
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene una CentroCosto
        /// </summary>
        /// <returns>Devuelve un objeto</returns>
        public BECentroCosto Obtener(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Obtener");
            dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
            try
            {
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.String, pbe.IdCentroCosto);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<int>(reader, "IdCentroCosto");
                        be.CodigoCentroCosto = DBValue.Get<String>(reader, "CodigoCentroCosto");
                        be.Descripcion = DBValue.Get<String>(reader, "Descripcion");
                        be.Tipo = DBValue.Get<String>(reader, "Tipo");
                        be.IdSupervisor = DBValue.Get<int>(reader, "IdSupervisor") == 0 ? (int?)null : DBValue.Get<int>(reader, "IdSupervisor");

                        be.GastoAdministrativo = DBValue.Get<String>(reader, "GastoAdministrativo");
                        be.GastoVenta = DBValue.Get<String>(reader, "GastoVenta");
                        be.GastoFinanciero = DBValue.Get<String>(reader, "GastoFinanciero");
                        be.GastoProduccion = DBValue.Get<String>(reader, "GastoProduccion");
                        be.Ingresos = DBValue.Get<String>(reader, "Ingresos");
                        be.GastoFijo = DBValue.Get<String>(reader, "GastoFijo");
                        be.GastoDirecto = DBValue.Get<String>(reader, "GastoDirecto");
                        be.CuentaAjusteInflacion = DBValue.Get<String>(reader, "CuentaAjusteInflacion");
                        be.Estado = DBValue.Get<String>(reader, "Estado");
                        be.UsuarioModificacion = DBValue.Get<String>(reader, "UsuarioModificacion");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        be.UsuarioCreacion = DBValue.Get<String>(reader, "UsuarioCreacion");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");

                        be.ComisionFijo = DBValue.Get<Decimal>(reader, "ComisionFijo");
                        be.ComisionMovil = DBValue.Get<Decimal>(reader, "ComisionMovil");
                        be.NivelAutorizacion = DBValue.Get<String>(reader, "NivelAutorizacion");
                        be.IdResponsable = DBValue.Get<Int32>(reader, "IdResponsable");
                        be.NivelCosteo = DBValue.Get<String>(reader, "NivelCosteo");
                        be.IdCuentaEstadistica = DBValue.Get<Int32>(reader, "IdCuentaEstadistica");
                        be.IdCuentaAjusteInflacion = DBValue.Get<Int32>(reader, "IdCuentaAjusteInflacion");
                        be.IdSucursal = DBValue.Get<Int32>(reader, "IdSucursal");
                        be.Clasificacion = DBValue.Get<String>(reader, "Clasificacion");
                        be.IdGrupoCentroCosto = DBValue.Get<Int32>(reader, "IdGrupoCentroCosto");
                        be.IdSubGrupoCentroCosto = DBValue.Get<Int32>(reader, "IdSubGrupoCentroCosto");
                        be.CodigoInterno = DBValue.Get<String>(reader, "CodigoInterno");
                        be.KilometragePromedio = DBValue.Get<Decimal>(reader, "KilometragePromedio");

                        break;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                //if (dbCmd.Connection.State == ConnectionState.Open)
                //dbCmd.Connection.Close();
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta Centro Costo
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BECentroCosto Insertar(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Insertar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdSupervisor", DbType.Int32, pbe.IdSupervisor);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_GastoAdministrativo", DbType.String, pbe.GastoAdministrativo);
                sqlDB.AddInParameter(dbCmd, "@as_GastoVenta", DbType.String, pbe.GastoVenta);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFinanciero", DbType.String, pbe.GastoFinanciero);
                sqlDB.AddInParameter(dbCmd, "@as_GastoProduccion", DbType.String, pbe.GastoProduccion);
                sqlDB.AddInParameter(dbCmd, "@as_Ingresos", DbType.String, pbe.Ingresos);
                sqlDB.AddInParameter(dbCmd, "@as_Tipo", DbType.String, pbe.Tipo);
                sqlDB.AddInParameter(dbCmd, "@as_GastoDirecto", DbType.String, pbe.GastoDirecto);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFijo", DbType.String, pbe.GastoFijo);
                sqlDB.AddInParameter(dbCmd, "@as_CuentaAjusteInflacion", DbType.String, pbe.CuentaAjusteInflacion);      
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);

                sqlDB.AddInParameter(dbCmd, "@a_ComisionFijo", DbType.Decimal, pbe.ComisionFijo);
                sqlDB.AddInParameter(dbCmd, "@a_ComisionMovil", DbType.Decimal, pbe.ComisionMovil);
                sqlDB.AddInParameter(dbCmd, "@as_NivelAutorizacion", DbType.String, pbe.NivelAutorizacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdResponsable", DbType.Int32, pbe.IdResponsable);
                sqlDB.AddInParameter(dbCmd, "@as_NivelCosteo", DbType.String, pbe.NivelCosteo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaEstadistica", DbType.Int32, pbe.IdCuentaEstadistica);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaAjusteInflacion", DbType.Int32, pbe.IdCuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_Clasificacion", DbType.String, pbe.Clasificacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoCentroCosto", DbType.Int32, pbe.IdGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSubGrupoCentroCosto", DbType.Int32, pbe.IdSubGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoInterno", DbType.String, pbe.CodigoInterno);
                sqlDB.AddInParameter(dbCmd, "@a_KilometragePromedio", DbType.Decimal, pbe.KilometragePromedio);
                         

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<Int32>(reader, "IdCentroCosto");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta Centro Costo - Spring
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BECentroCosto InsertarSpring(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Insertar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSupervisor", DbType.Int32, pbe.IdSupervisor);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_GastoAdministrativo", DbType.String, pbe.GastoAdministrativo);
                sqlDB.AddInParameter(dbCmd, "@as_GastoVenta", DbType.String, pbe.GastoVenta);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFinanciero", DbType.String, pbe.GastoFinanciero);
                sqlDB.AddInParameter(dbCmd, "@as_GastoProduccion", DbType.String, pbe.GastoProduccion);
                sqlDB.AddInParameter(dbCmd, "@as_Ingresos", DbType.String, pbe.Ingresos);
                sqlDB.AddInParameter(dbCmd, "@as_Tipo", DbType.String, pbe.Tipo);
                sqlDB.AddInParameter(dbCmd, "@as_GastoDirecto", DbType.String, pbe.GastoDirecto);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFijo", DbType.String, pbe.GastoFijo);
                sqlDB.AddInParameter(dbCmd, "@as_CuentaAjusteInflacion", DbType.String, pbe.CuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);

                sqlDB.AddInParameter(dbCmd, "@a_ComisionFijo", DbType.Decimal, pbe.ComisionFijo);
                sqlDB.AddInParameter(dbCmd, "@a_ComisionMovil", DbType.Decimal, pbe.ComisionMovil);
                sqlDB.AddInParameter(dbCmd, "@as_NivelAutorizacion", DbType.String, pbe.NivelAutorizacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdResponsable", DbType.Int32, pbe.IdResponsable);
                sqlDB.AddInParameter(dbCmd, "@as_NivelCosteo", DbType.String, pbe.NivelCosteo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaEstadistica", DbType.Int32, pbe.IdCuentaEstadistica);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaAjusteInflacion", DbType.Int32, pbe.IdCuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_Clasificacion", DbType.String, pbe.Clasificacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoCentroCosto", DbType.Int32, pbe.IdGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSubGrupoCentroCosto", DbType.Int32, pbe.IdSubGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoInterno", DbType.String, pbe.CodigoInterno);
                sqlDB.AddInParameter(dbCmd, "@a_KilometragePromedio", DbType.Decimal, pbe.KilometragePromedio);


                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<Int32>(reader, "IdCentroCosto");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Actualiza Centro Costo
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BECentroCosto Actualizar(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Actualizar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSupervisor", DbType.Int32, pbe.IdSupervisor);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_GastoAdministrativo", DbType.String, pbe.GastoAdministrativo);
                sqlDB.AddInParameter(dbCmd, "@as_Tipo", DbType.String, pbe.Tipo);
                sqlDB.AddInParameter(dbCmd, "@as_GastoVenta", DbType.String, pbe.GastoVenta);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFinanciero", DbType.String, pbe.GastoFinanciero);
                sqlDB.AddInParameter(dbCmd, "@as_GastoProduccion", DbType.String, pbe.GastoProduccion);
                sqlDB.AddInParameter(dbCmd, "@as_Ingresos", DbType.String, pbe.Ingresos);
                sqlDB.AddInParameter(dbCmd, "@as_GastoDirecto", DbType.String, pbe.GastoDirecto);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFijo", DbType.String, pbe.GastoFijo);
                sqlDB.AddInParameter(dbCmd, "@as_CuentaAjusteInflacion", DbType.String, pbe.CuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);


                sqlDB.AddInParameter(dbCmd, "@a_ComisionFijo", DbType.Decimal, pbe.ComisionFijo);
                sqlDB.AddInParameter(dbCmd, "@a_ComisionMovil", DbType.Decimal, pbe.ComisionMovil);
                sqlDB.AddInParameter(dbCmd, "@as_NivelAutorizacion", DbType.String, pbe.NivelAutorizacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdResponsable", DbType.Int32, pbe.IdResponsable);
                sqlDB.AddInParameter(dbCmd, "@as_NivelCosteo", DbType.String, pbe.NivelCosteo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaEstadistica", DbType.Int32, pbe.IdCuentaEstadistica);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaAjusteInflacion", DbType.Int32, pbe.IdCuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_Clasificacion", DbType.String, pbe.Clasificacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoCentroCosto", DbType.Int32, pbe.IdGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSubGrupoCentroCosto", DbType.Int32, pbe.IdSubGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoInterno", DbType.String, pbe.CodigoInterno);
                sqlDB.AddInParameter(dbCmd, "@a_KilometragePromedio", DbType.Decimal, pbe.KilometragePromedio);
                
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<Int32>(reader, "IdCentroCosto");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Actualiza Centro Costo - Spring
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BECentroCosto ActualizarSpring(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Actualizar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSupervisor", DbType.Int32, pbe.IdSupervisor);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_GastoAdministrativo", DbType.String, pbe.GastoAdministrativo);
                sqlDB.AddInParameter(dbCmd, "@as_Tipo", DbType.String, pbe.Tipo);
                sqlDB.AddInParameter(dbCmd, "@as_GastoVenta", DbType.String, pbe.GastoVenta);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFinanciero", DbType.String, pbe.GastoFinanciero);
                sqlDB.AddInParameter(dbCmd, "@as_GastoProduccion", DbType.String, pbe.GastoProduccion);
                sqlDB.AddInParameter(dbCmd, "@as_Ingresos", DbType.String, pbe.Ingresos);
                sqlDB.AddInParameter(dbCmd, "@as_GastoDirecto", DbType.String, pbe.GastoDirecto);
                sqlDB.AddInParameter(dbCmd, "@as_GastoFijo", DbType.String, pbe.GastoFijo);
                sqlDB.AddInParameter(dbCmd, "@as_CuentaAjusteInflacion", DbType.String, pbe.CuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);


                sqlDB.AddInParameter(dbCmd, "@a_ComisionFijo", DbType.Decimal, pbe.ComisionFijo);
                sqlDB.AddInParameter(dbCmd, "@a_ComisionMovil", DbType.Decimal, pbe.ComisionMovil);
                sqlDB.AddInParameter(dbCmd, "@as_NivelAutorizacion", DbType.String, pbe.NivelAutorizacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdResponsable", DbType.Int32, pbe.IdResponsable);
                sqlDB.AddInParameter(dbCmd, "@as_NivelCosteo", DbType.String, pbe.NivelCosteo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaEstadistica", DbType.Int32, pbe.IdCuentaEstadistica);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCuentaAjusteInflacion", DbType.Int32, pbe.IdCuentaAjusteInflacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_Clasificacion", DbType.String, pbe.Clasificacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoCentroCosto", DbType.Int32, pbe.IdGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSubGrupoCentroCosto", DbType.Int32, pbe.IdSubGrupoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoInterno", DbType.String, pbe.CodigoInterno);
                sqlDB.AddInParameter(dbCmd, "@a_KilometragePromedio", DbType.Decimal, pbe.KilometragePromedio);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<Int32>(reader, "IdCentroCosto");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Actualiza el Estado Nivel Alerta
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BECentroCosto Eliminar(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Eliminar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                //dbCmd.Transaction = Transaction.InnerDbTransaction; //Para administrar la transaccion
                //dbCmd.Connection = Transaction.Connection;  //Para administrar la conecion de la transaccion
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<Int32>(reader, "IdCentroCosto");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Actualiza el Estado Nivel Alerta
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BECentroCosto EliminarSpring(BECentroCosto pbe)
        {
            BECentroCosto be = new BECentroCosto();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_CentroCosto_Eliminar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                //dbCmd.Transaction = Transaction.InnerDbTransaction; //Para administrar la transaccion
                //dbCmd.Connection = Transaction.Connection;  //Para administrar la conecion de la transaccion
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoCentroCosto", DbType.String, pbe.CodigoCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdCentroCosto = DBValue.Get<Int32>(reader, "IdCentroCosto");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }
        #endregion  Members
    }
}
